//
//  HMMainViewController.swift
//  Weibo22
//
//  Created by Apple on 16/11/30.
//  Copyright © 2016年 Apple. All rights reserved.
//

import UIKit
import SVProgressHUD

//  根视图的控制器
class HMMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //  添加子视图控制器有几种
        
//        viewControllers = []
        
        
        //  设置自定义的HMTabBar
        
        let hmTabBar = HMTabBar()
        //  设置代理对象
        hmTabBar.hmDelegate = self
        
        //  默认请求如果定义了闭包,那么是逃逸状态,需要使用self指定语境, @escaping 作为闭包参数 在闭包里面需要使用self
        //  如果在函数里面传入闭包参数,那么不是逃逸状态,可以不需要加self
//        a {
//            print(view)
//        }
        
        
//        let b = {
//            print(view)
//        }
        
        //  设置闭包
        hmTabBar.callBack = { [weak self] in
            
            print(self)
            
            //  发微博相关操作
            
            if !HMUserAccountViewModel.sharedUserAccount.isLogin {
                SVProgressHUD.showError(withStatus: "请先登录, 亲~")
                return
            }
            
            //  代码执行到此,表示登陆
            //  获取window中最上面的window
//            let window = UIApplication.shared.windows.last!
//            let composeView = HMComposeView()
//            window.addSubview(composeView)
            
            if let weakSelf = self {
                let composeView = HMComposeView()
                composeView.show(target: weakSelf)
            
            }
            
            
            
        }
        
        
        //  使用kvc方式给只读属性赋值
        setValue(hmTabBar, forKey: "tabBar")
        
//        self.tabBar = HMTabBar()
        
        
        
        addChildViewController(childController: HMHomeTableViewController(), imageName: "tabbar_home", title: "首页")
        addChildViewController(childController: HMMessageTableViewController(), imageName: "tabbar_message_center", title: "消息")
        addChildViewController(childController: HMDiscoverTableViewController(), imageName: "tabbar_discover", title: "发现")
        addChildViewController(childController: HMProfileTableViewController(), imageName: "tabbar_profile", title: "我的")
        
        
       
    }
    
    
    //  默认请求下闭包作为函数的参数传入,是非逃逸状态的
//    func a( callback: @noescape ()->()) {
//        callback()
//    }
    
    //  重载添加子视图控制器
    func addChildViewController(childController: UIViewController, imageName: String, title: String) {
        //  设置tabbar图片
        childController.tabBarItem.image = UIImage(named: imageName)
        //  修改图片的渲染方式
        childController.tabBarItem.selectedImage = UIImage(named: imageName + "_selected")?.withRenderingMode(.alwaysOriginal)
        
        //  修改tabbar 文字颜色
        childController.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.orange], for: .selected)
        
        childController.tabBarItem.setTitleTextAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 12)], for: .normal)
        
        //  设置tabbar的文字
//        childController.tabBarItem.title = title
//        childController.navigationItem.title = title
        
        //  合成一句
        childController.title = title
        
        //  创建导航视图控制器
        let nav = HMNavigationController(rootViewController: childController)
        
        //  添加子视图控制器
        addChildViewController(nav)
        
        
        
        
    }

    

}

////  MARK: -- 遵守HMTabBarDelegate
extension HMMainViewController: HMTabBarDelegate {
    func didSelectedComposeButton() {
        print("我是代理对象调用过来的")
    }
}













